import os
import shutil
import argparse
from pathlib import Path

def collect_image_files(source_dir, image_extensions=None):
    """收集源目录及其子目录中所有图片文件"""
    if image_extensions is None:
        # 常见图片格式
        image_extensions = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', 
                           '.tiff', '.webp', '.svg', '.ico', '.heic'}
    
    image_files = []
    # 遍历源目录
    for root, _, files in os.walk(source_dir):
        for file in files:
            # 获取文件扩展名并转换为小写
            ext = os.path.splitext(file)[1].lower()
            if ext in image_extensions:
                image_files.append(os.path.join(root, file))
    
    return image_files

def move_and_rename_images(image_files, target_dir):
    """移动图片到目标目录并从1开始重命名"""
    # 确保目标目录存在
    os.makedirs(target_dir, exist_ok=True)
    
    # 按找到的顺序重命名图片
    for i, src_path in enumerate(image_files, 1):
        try:
            # 获取文件扩展名
            ext = os.path.splitext(src_path)[1].lower()
            # 构建新文件名 (1.jpg, 2.png 等)
            dest_filename = f"{i}{ext}"
            dest_path = os.path.join(target_dir, dest_filename)
            
            # 移动文件
            shutil.move(src_path, dest_path)
            print(f"已移动: {src_path} -> {dest_path}")
            
        except Exception as e:
            print(f"移动文件 {src_path} 时出错: {str(e)}")

def main(path):
    # # 设置命令行参数
    # parser = argparse.ArgumentParser(description='收集并移动目录中的所有图片')
    # parser.add_argument('--source', type=str, required=True, 
    #                   help='源目录路径，将从中查找图片')
    # parser.add_argument('--target', type=str, required=True, 
    #                   help='目标目录路径，图片将被移动到这里')
    
    # args = parser.parse_args()
    
    # 检查源目录是否存在
    if not os.path.isdir(path):
        print(f"错误：源目录 '{path}' 不存在")
        return
    
    # 收集所有图片文件
    print(f"正在 {path} 中查找图片...")
    image_files = collect_image_files(path)
    
    if not image_files:
        print("未找到任何图片文件")
        return
    
    print(f"找到 {len(image_files)} 个图片文件")
    
    # 移动并重新命名图片
    target_path = os.path.join(path, "images")
    print(f"正在将图片移动到 {target_path}...")
    move_and_rename_images(image_files, target_path)
    
    print("操作完成")

if __name__ == "__main__":
    Path=r"D:\porn"
    main(Path)